package stream;

import java.util.Arrays;
import java.util.List;
import java.util.Optional;

/**
 * 找到流中的最大的元素/最小的元素
 */
public class StreamMaxAndMin {
    public static void main(String[] args) {
        max();
        min();
    }

    private static void min() {
        List<Integer> list = Arrays.asList(1, 2, 3, 4);
//        Optional<Integer> max = list.stream().max((i1, i2) -> i1 - i2);//默认升序排序
        Optional<Integer> min = list.stream().min((i1, i2) -> i2 - i1); // 如果是倒序那么结果是4，说明min()方法本质上是取排序后流中的第一个元素
        Integer i = min.get();
        System.out.println("i = " + i);
    }

    private static void max() {
        List<Integer> list = Arrays.asList(1, 2, 3, 4);
//        Optional<Integer> max = list.stream().max((i1, i2) -> i1 - i2);//默认升序排序
        Optional<Integer> max = list.stream().max((i1, i2) -> i2 - i1); // 如果是倒序那么结果是1，说明max()方法本质上是取排序后流中的最后一个元素
        Integer i = max.get();
        System.out.println("i = " + i);
    }
}
